package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.content.common.domain.page.PageRequestParams;
import com.xuecheng.content.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/*

课程基本信息Api接口
在Api工程单独定义接口的原因如下
1.接口集中管理
2.Api工程的接口将作为各微服务远程调用使用

 */

@Api(value = "课程基本信息Api",tags = "描述：课程基本信息管理",description = "课程基本信息业务管理")
public interface CourseBaseApi {

    @ApiOperation("查询全部信息")
    List queryAll();

    @ApiOperation("分页条件查询课程信息")
    PageVO queryCourseBaseList(PageRequestParams params, QueryCourseModel model);


    @ApiOperation(value = "保存课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO",
            value = "课程基本视图信息", required = true,
            dataType = "CourseBaseVO", paramType = "body")
    CourseBaseDTO createCourseBase(CourseBaseVO courseBaseVO);


    @ApiOperation(value = "根据id查询课程基本信息")
    @ApiImplicitParam(name = "courseBaseId",value = "课程id",required = true,dataType = "long",paramType = "path")
    CourseBaseDTO getCourseBase(long courseBaseId);

    @ApiOperation(value = "保修改课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO",
            value = "课程基本视图信息", required = true,
            dataType = "CourseBaseVO", paramType = "body")
    CourseBaseDTO modifyCourseBase(CourseBaseVO courseBaseVO);


    @ApiOperation(value = "根据id删除课程")
    @ApiImplicitParam(name = "courseBaseId",value = "课程id",required = true,paramType = "path" ,dataType = "long")
    void removeCourseBase(long courseBaseId);


    @ApiOperation(value = "提交课程")
    @ApiImplicitParam(name = "courseBaseId",value = "课程id",required = true,dataType = "Long",paramType = "path")
    void commitCouseBase(Long courseBaseId);



}
